/**
* 动物园类。
*/
public class Zoo {
	/**
	* 通过针对抽象类编程，设计向后兼容的程序
	* 只要外界调用race方法时传递的是Animal类的子类的对象，
	* 并且该子类正确的重写了run方法，就能正确处理。
	* 而不需要修改这里的程序。这就是多态的意义。
	* 抽象类Animal在这里的作用是指定规则，只要遵循相同规则，就能向后兼容。
	*/
	public void race(Animal a1, Animal a2) {
		a1.run();
		a2.run();
	}

	/*public void race(Rabbit a1, Tortoise a2){
		a1.jump();
		a2.crawl();
	}

	public void race(Rabbit a1, Tiger a2){
		a1.jump();
		a2.run();
	}*/

	// 如果很多动物都要参赛，需要重载很多类似的方法
	// 作为类的设计者，永远都改不完的需求。
}